<?php

/**
 * This is the model class for table "tbl_user".
 *
 * The followings are the available columns in table 'tbl_user':
 * @property integer $id
 * @property string $username
 * @property string $password
 * @property string $email
 * @property integer $parea
 * @property integer $punidade
 * @property integer $pempresa
 * @property integer $pprojeto
 * @property integer $pusuario
 * @property integer $pacentral
 * @property integer $pdoctecnica
 * @property integer $idProj
 */
class User extends CActiveRecord
{
	public $password;
        /**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tbl_user';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('username, password, email, parea, punidade, pempresa, pprojeto, pusuario, pdoctecnica, idProj', 'required'),
			array('parea, punidade, pempresa, pprojeto, pusuario, pacentral, pdoctecnica, idProj', 'numerical', 'integerOnly'=>true),
			array('username, email', 'length', 'max'=>128),
			array('password', 'length', 'max'=>256),
                    
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('id, username, password, email, parea, punidade, pempresa, pprojeto, pusuario, pacentral, pdoctecnica, idProj', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'username' => 'Nome de Usuário',
			'password' => 'Password',
			'email' => 'E-mail',
			'parea' => 'Permissão Área',
			'punidade' => 'Permissão Unidade',
			'pempresa' => 'Permissão Empresa',
			'pprojeto' => 'Permissão Projeto',
			'pusuario' => 'Permissão Usuario',
			'pacentral' => 'Permissão Arquivo Central',
			'pdoctecnica' => 'Permissão Documentação Técnica',
			'idProj' => 'Projeto',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('username',$this->username,true);
		$criteria->compare('password',$this->password,true);
		$criteria->compare('email',$this->email,true);
		$criteria->compare('parea',$this->parea);
		$criteria->compare('punidade',$this->punidade);
		$criteria->compare('pempresa',$this->pempresa);
		$criteria->compare('pprojeto',$this->pprojeto);
		$criteria->compare('pusuario',$this->pusuario);
		$criteria->compare('pacentral',$this->pacentral);
		$criteria->compare('pdoctecnica',$this->pdoctecnica);
		$criteria->compare('idProj',$this->idProj);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}

	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return User the static model class
	 */
        public function getAcentralOptions(){
                return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
        public function acentralText($key)
        {
            $options = $this->getAcentralOptions();
            return $options[$key];
        }
        public function getAreaOptions(){
               return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
        public function areaText($key)
        {
            $options = $this->getAreaOptions();
            return $options[$key];
        }
        public function getUnidadeOptions(){
                return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
         public function unidadeText($key)
        {
            $options = $this->getUnidadeOptions();
            return $options[$key];
        }
        public function getEmpresaOptions(){
                return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
        public function empresaText($key)
        {
            $options = $this->getEmpresaOptions();
            return $options[$key];
        }
        public function getProjetoOptions(){
                return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
        public function projetoText($key)
        {
            $options = $this->getProjetoOptions();
            return $options[$key];
        }
        public function getUsuarioOptions(){
                return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
        public function usuarioText($key)
        {
            $options = $this->getUsuarioOptions();
            return $options[$key];
        }
        public function getDoctecnicaOptions(){
               return array('0' => 'Sem Acesso', '1' => 'Leitura', '2' => 'Gravação', '3' => 'Administração');
        }
        public function doctecnicaText($key)
        {
            $options = $this->getDoctecnicaOptions();
            return $options[$key];
        }
        protected function beforeSave()
         {
                if (parent::beforeSave()) {
                $this->password = $this->hash($this->password);
            return true;
            }
        return false;
        }
        
        public function check($value)
        {
                $new_hash = crypt($value, $this->password);
                if ($new_hash == $this->password) {
            return true;
            }
        return false;
        }
        
        
        public function hash($value)
        {
        return crypt($value);
        }
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
}
